package com.jiyinit.web.core.common.util;

//import com.jiyinit.core.framework.base.util.Check;
//import com.jiyinit.core.framework.base.util.JsonEntityTransform;
//import com.jiyinit.core.framework.base.util.UUIDGenerator;
//import com.jiyinit.core.framework.redis.RedisOperate;
//import com.jiyinit.web.core.business.vo.RedisUserVo;
//import com.jiyinit.web.core.common.constant.DeviceTypeEnum;
//import com.jiyinit.web.core.common.constant.RedisKeyConst;

/**
 * <p></p>
 * <p>
 * <PRE>
 * <BR>	修改记录
 * <BR>-----------------------------------------------
 * <BR>	修改日期			修改人			修改内容
 * </PRE>
 *
 * @author lishaochuan
 * @version 1.0
 * @date 2017/7/28 9:26
 * @since 1.0
 */
public class RedisUtil {

    private final static long offLineTime = 1000 * 60 * 10; // 10分钟

//
//    /**
//     * 用户名密码登录设置token缓存
//     * @author lishaochuan
//     * @create 2017/7/28 10:16
//     * @param
//     * @return
//     */
//    public static String loginSetToken(RedisOperate redisOperate, String deviceType, RedisUserVo userVo){
//        // 设置token
//        String newToken = UUIDGenerator.hexUUID();
//        String userKey = "";
//        if(DeviceTypeEnum.DeviceType.DEVICE_TYPE_PC.equals(deviceType)){
//            userKey = RedisKeyConst.getUserPCKey(userVo.getLoginName());
//        } else {
//            userKey = RedisKeyConst.getUserMobileKey(userVo.getLoginName());
//        }
//        String oldToken = redisOperate.get(userKey);
//        if(!Check.isNullStr(oldToken)){
//            redisOperate.del(RedisKeyConst.getTokenKey(oldToken));
//        }
//
//        // 放入缓存
//        int tokenTime = 0;
//        if(DeviceTypeEnum.DeviceType.DEVICE_TYPE_PC.equals(deviceType)){
//            tokenTime = RedisKeyConst.TOKEN_PC_TIME;
//        } else {
//            tokenTime = RedisKeyConst.TOKEN_MOBILE_TIME;
//        }
//        redisOperate.setex(userKey, tokenTime, newToken);
//        redisOperate.setex(RedisKeyConst.getTokenKey(newToken), tokenTime, JsonEntityTransform.object2Json(userVo));
//
//        return newToken;
//    }


//    /**
//     * 校验token信息
//     * @author lishaochuan
//     * @create 2017/7/28 9:33
//     * @param
//     * @return
//     */
//    public static RedisUserVo checkToken(RedisOperate redisOperate, String token, Logger LOGGER){
//        String userVoJson = redisOperate.get(RedisKeyConst.getTokenKey(token));
//        if(Check.isNullStr(userVoJson)){
//            LogUtil.error(LOGGER, "redis中不存在此token信息:{}", token);
//            return null;
//        }
//
//        RedisUserVo userVo = JsonEntityTransform.json2Object(userVoJson, RedisUserVo.class);
//        String userKey;
//        if(DeviceTypeEnum.DEVICE_TYPE_PC.getNumber() == userVo.getDeviceType()){
//            userKey = RedisKeyConst.getUserPCKey(userVo.getLoginName());
//        } else {
//            userKey = RedisKeyConst.getUserMobileKey(userVo.getLoginName());
//        }
//
//        if(!redisOperate.exists(userKey)){
//            LogUtil.error(LOGGER, "redis中不存在此token对应的用户信息,token:{},userInfo:{}", token, userVoJson);
//            return null;
//        }
//
//        return userVo;
//    }
//
//    /**
//     * 刷新token
//     * @author lishaochuan
//     * @create 2017/7/28 10:38
//     * @param
//     * @return
//     */
//    public static void refreshToken(RedisOperate redisOperate, int deviceType, String loginName, String token){
//        String userKey;
//        int tokenTime;
//        if(DeviceTypeEnum.DEVICE_TYPE_PC.getNumber() == deviceType){
//            userKey = RedisKeyConst.getUserMobileKey(loginName);
//            tokenTime = RedisKeyConst.TOKEN_PC_TIME;
//        }else {
//            userKey = RedisKeyConst.getUserPCKey(loginName);
//            tokenTime = RedisKeyConst.TOKEN_MOBILE_TIME;
//        }
//
//        // 刷新redis存活时间
//        redisOperate.expire(userKey, tokenTime);
//        redisOperate.expire(RedisKeyConst.getTokenKey(token), tokenTime);
//    }
//
//
//
//    /**
//     * 清空token
//     * @author lishaochuan
//     * @create 2017/7/28 9:40
//     * @param
//     * @return
//     */
//    public static void delToken(RedisOperate redisOperate, String loginName, DeviceTypeEnum deviceType, String token){
//        String userKey;
//        if(DeviceTypeEnum.DEVICE_TYPE_PC.equals(deviceType)){
//            userKey = RedisKeyConst.getUserPCKey(loginName);
//        } else {
//            userKey = RedisKeyConst.getUserMobileKey(loginName);
//        }
//        redisOperate.del(userKey);
//        redisOperate.del(RedisKeyConst.getTokenKey(token));
//    }
//
//
//    /**
//     * 刷新用户在线状态
//     * @author lishaochuan
//     * @create 2017/7/28 14:40
//     * @param
//     * @return
//     */
//    public static void refreshOnlineStatus(RedisOperate redisOperate, User user, int deviceType){
//        RedisUserVo userVo = new RedisUserVo();
//        userVo.setId(user.getId());
//        userVo.setLoginName(user.getLoginName());
//        userVo.setRealName(user.getRealName());
//        userVo.setDeviceType(deviceType);
//        userVo.setLastHeartTime(System.currentTimeMillis());
//
//        String hashKey = user.getId() + "_" + OnlineDeviceEnum.getOnlineDevice(deviceType);
//        redisOperate.hset(RedisKeyConst.getOnlineUserKey(), hashKey, userVo);
//    }
//
//    /**
//     * 删除用户在线状态
//     * @author lishaochuan
//     * @create 2017/7/28 14:56
//     * @param
//     * @return
//     */
//    public static void delOnlineStatus(RedisOperate redisOperate, int userId, int deviceType){
//        String hashKey = userId + "_" + OnlineDeviceEnum.getOnlineDevice(deviceType);
//        redisOperate.hdel(RedisKeyConst.getOnlineUserKey(), hashKey);
//    }
//
//
//    /**
//     * 判断用户是否在线
//     * @author lishaochuan
//     * @create 2017/7/28 14:45
//     * @param
//     * @return
//     */
//    public static boolean isOnlineUser(RedisOperate redisOperate, int userId){
//        RedisUserVo userVo = redisOperate.hgetValueOfObject(RedisKeyConst.getOnlineUserKey(), userId + "_" + OnlineDeviceEnum.MOBILE.getName(), RedisUserVo.class);
//        if(!Check.isNullObj(userVo) && (System.currentTimeMillis() - userVo.getLastHeartTime() < offLineTime)){
//            return true;
//        }
//        userVo = redisOperate.hgetValueOfObject(RedisKeyConst.getOnlineUserKey(), userId + "_" + OnlineDeviceEnum.PC.getName(), RedisUserVo.class);
//        if(!Check.isNullObj(userVo) && (System.currentTimeMillis() - userVo.getLastHeartTime() < offLineTime)){
//            return true;
//        }
//        return false;
//    }
//


}
